﻿using System;
using System.IO;
using Styx;
using Styx.Helpers;

namespace TuanHA_Monk_Special_Edition_Extreme_PvP
{
    public class THSettings : Settings
    {
        public static readonly THSettings Instance = new THSettings();

        #region DataSource

        public bool UpdateStatus;

        public THSettings()
            : base(
                Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                             string.Format(
                                 @"Routines/TuanHAMonkSpecialEdition/TuanHA-Monk-Settings-20130123-{0}.xml",
                                 StyxWoW.Me.Name)))
        {
            //DsCleanseASAP.ReadXml(PathCleanseASAP);
        }

        #endregion

        #region General

        [Setting, DefaultValue(true)]
        public bool AoE { get; set; }

        [Setting, DefaultValue(34)]
        public int AoEKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool AoEKeyUse { get; set; }

        [Setting, DefaultValue(true)]
        public bool AttackOOC { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoAttack { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoMove { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoFace { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoBuff { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoRacial { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoTarget { get; set; }

        [Setting, DefaultValue(70)]
        public int AttackManaLevel { get; set; }

        [Setting, DefaultValue(true)]
        public bool AvertHarm { get; set; }

        [Setting, DefaultValue(5)]
        public int AvertHarmUnit { get; set; }

        [Setting, DefaultValue(50)]
        public int AvertHarmHP { get; set; }

        [Setting, DefaultValue(19)] //S
        public int Backward { get; set; }

        [Setting, DefaultValue(true)]
        public bool BreathofFire { get; set; }

        [Setting, DefaultValue(3)]
        public int BreathofFireUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool BlackoutKick { get; set; }

        [Setting, DefaultValue(true)]
        public bool BlackoutKickMist { get; set; }

        [Setting, DefaultValue(60)]
        public int BlackoutKickMistMana { get; set; }

        [Setting, DefaultValue(1000)]
        public int BlockInputDelay { get; set; }

        [Setting, DefaultValue(true)]
        public bool BlockInputFoF { get; set; }

        [Setting, DefaultValue(false)]
        public bool BlockInputFSK { get; set; }

        [Setting, DefaultValue(false)]
        public bool BlockInputRoll { get; set; }

        [Setting, DefaultValue(20000)]
        public int BurstDelay { get; set; }

        [Setting, DefaultValue(42)]
        public int BurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int BurstHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool Burst { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChiBrew { get; set; }

        [Setting, DefaultValue(0)]
        public int ChiBrewCurrentChi { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChiBurst { get; set; }

        [Setting, DefaultValue(5)]
        public int ChiBurstUnit { get; set; }

        [Setting, DefaultValue(80)]
        public int ChiBurstHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChiTorpedo { get; set; }

        [Setting, DefaultValue(3)]
        public int ChiTorpedoHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChiTorpedoMist { get; set; }

        [Setting, DefaultValue(5)]
        public int ChiTorpedoMistUnit { get; set; }

        [Setting, DefaultValue(80)]
        public int ChiTorpedoMistHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChiWave { get; set; }

        [Setting, DefaultValue(85)]
        public int ChiWaveHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ChiWaveMe { get; set; }

        [Setting, DefaultValue(50)]
        public int ChiWaveMeHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Clash { get; set; }

        [Setting, DefaultValue(false)]
        public bool CracklingJadeLightning { get; set; }

        [Setting, DefaultValue(100)]
        public int CracklingJadeLightningHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool CracklingJadeLightningMist { get; set; }

        [Setting, DefaultValue(80)]
        public int CracklingJadeLightningMistMana { get; set; }

        [Setting, DefaultValue(true)]
        public bool DampenHam { get; set; }

        [Setting, DefaultValue(70)]
        public int DampenHamHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool DetoxCC { get; set; }

        [Setting, DefaultValue(true)]
        public bool DetoxDebuff { get; set; }

        [Setting, DefaultValue(1)]
        public int DetoxNumberDebuff { get; set; }

        [Setting, DefaultValue(false)]
        public bool DeveloperMode { get; set; }

        [Setting, DefaultValue(true)]
        public bool DiffuseMagic { get; set; }

        [Setting, DefaultValue(70)]
        public int DiffuseMagicHP { get; set; }

        [Setting, DefaultValue(3)]
        public int DiffuseMagicDebuff { get; set; }

        [Setting, DefaultValue(true)]
        public bool DizzyingHaze { get; set; }

        [Setting, DefaultValue(true)]
        public bool Disable { get; set; }

        [Setting, DefaultValue(true)]
        public bool DisableBrew { get; set; }

        [Setting, DefaultValue(true)]
        public bool DisableMist { get; set; }

        [Setting, DefaultValue(95)]
        public int DoNotHealAbove { get; set; }

        [Setting, DefaultValue(true)]
        public bool DropHealingSphereMovingToEnemy { get; set; }

        [Setting, DefaultValue(true)]
        public bool DropHealingSphereCombat { get; set; }

        [Setting, DefaultValue(40)]
        public int DropHealingSphereCombatHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ElusiveBrew { get; set; }

        [Setting, DefaultValue(50)]
        public int ElusiveBrewHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool ElusiveBrewStack { get; set; }

        [Setting, DefaultValue(15)]
        public int ElusiveBrewStackNumber { get; set; }

        [Setting, DefaultValue(true)]
        public bool EnergizingBrew { get; set; }

        [Setting, DefaultValue(30)]
        public int EnergizingBrewPercent { get; set; }

        [Setting, DefaultValue(false)]
        public bool EnvelopingMist { get; set; }

        [Setting, DefaultValue(30)]
        public int EnvelopingMistHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ExpelHarm { get; set; }

        [Setting, DefaultValue(50)]
        public int ExpelHarmHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool FortifyingBrew { get; set; }

        [Setting, DefaultValue(30)]
        public int FortifyingBrewHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool FlyingSerpentKick { get; set; }

        [Setting, DefaultValue(15)]
        public int FlyingSerpentKickMinDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool FistsofFury { get; set; }

        [Setting, DefaultValue(50)]
        public int FistsofFuryEnergy { get; set; }

        [Setting, DefaultValue(23)] //W
        public int Forward { get; set; }

        [Setting, DefaultValue(true)]
        public bool GrappleWeapon { get; set; }

        [Setting, DefaultValue(60)]
        public int GrappleWeaponHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Guard { get; set; }

        [Setting, DefaultValue(80)]
        public int GuardHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool HealingSphereMist { get; set; }

        [Setting, DefaultValue(60)]
        public int HealingSphereMistHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool HealingSphereMistTank { get; set; }

        [Setting, DefaultValue(20)]
        public int HealingSphereMistTankMs { get; set; }

        [Setting, DefaultValue(true)]
        public bool HealthStone { get; set; }

        [Setting, DefaultValue(40)]
        public int HealthStoneHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool InputBlockMode { get; set; }

        [Setting, DefaultValue(true)]
        public bool InvokeXuen { get; set; }

        [Setting, DefaultValue(100)]
        public int InvokeXuenHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool InvokeXuenBoss { get; set; }

        [Setting, DefaultValue(true)]
        public bool InvokeXuenPlayer { get; set; }

        [Setting, DefaultValue(true)]
        public bool InvokeXuenElite { get; set; }

        [Setting, DefaultValue(false)]
        public bool InvokeXuenAll { get; set; }

        [Setting, DefaultValue(true)]
        public bool InvokeXuenBurst { get; set; }

        [Setting, DefaultValue(true)]
        public bool InvokeXuenTank { get; set; }

        [Setting, DefaultValue(40)]
        public int InvokeXuenTankHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Jab { get; set; }

        [Setting, DefaultValue(true)]
        public bool JabMist { get; set; }

        [Setting, DefaultValue(true)]
        public bool JabBrew { get; set; }

        [Setting, DefaultValue(2)]
        public int JabMistChi { get; set; }

        [Setting, DefaultValue(80)]
        public int JabMistMana { get; set; }

        [Setting, DefaultValue(true)]
        public bool KegSmash { get; set; }

        [Setting, DefaultValue(3)]
        public int KegSmashUnit { get; set; }

        [Setting, DefaultValue("")]
        public string LastSavedSpec { get; set; }

        [Setting, DefaultValue("")]
        public string LastSavedMode { get; set; }

        [Setting, DefaultValue(true)]
        public bool LagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool LeeroftheOxBrew { get; set; }

        [Setting, DefaultValue(true)]
        public bool LegSweepEnemy { get; set; }

        [Setting, DefaultValue(30)]
        public int LegSweepEnemyHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool LegSweepInterrupt { get; set; }

        [Setting, DefaultValue(2000)]
        public int LegSweepInterruptMs { get; set; }

        [Setting, DefaultValue(true)]
        public bool LegSweepMe { get; set; }

        [Setting, DefaultValue(40)]
        public int LegSweepMePercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool LifeCocoon { get; set; }

        [Setting, DefaultValue(20)]
        public int LifeCocoonHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ManaTea { get; set; }

        [Setting, DefaultValue(80)]
        public int ManaTeaMana { get; set; }

        [Setting, DefaultValue(true)]
        public bool ParalysisInterrupt { get; set; }

        [Setting, DefaultValue(2000)]
        public int ParalysisInterruptMs { get; set; }

        [Setting, DefaultValue(true)]
        public bool ParalysisMeLowHP { get; set; }

        [Setting, DefaultValue(50)]
        public int ParalysisMeLowHPPercent { get; set; }

        [Setting, DefaultValue(true)]
        public bool PathofBlossoms { get; set; }

        [Setting, DefaultValue(95)]
        public int PathofBlossomsEnergy { get; set; }

         [Setting, DefaultValue(true)]
        public bool PathofBlossomsMist { get; set; }

        [Setting, DefaultValue(90)]
        public int PathofBlossomsMana { get; set; }

        
        [Setting, DefaultValue(false)]
        public bool Pause { get; set; }

        [Setting, DefaultValue(33)]
        public int PauseKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool PauseKeyUse { get; set; }

        [Setting, DefaultValue(true)]
        public bool PickChiSphere { get; set; }

        [Setting, DefaultValue(10)]
        public int PickChiSphereMaxDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool PickHealingSphere { get; set; }

        [Setting, DefaultValue(10)]
        public int PickHealingSphereMaxDistance { get; set; }

        [Setting, DefaultValue(2000)]
        public int PendingSpellStopWatchDuration { get; set; }

        [Setting, DefaultValue(70)]
        public int PriorityHeal { get; set; }

        [Setting, DefaultValue(true)]
        public bool Provoke { get; set; }

        [Setting, DefaultValue(15)]
        public int ProvokeMinDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool ProvokeBrew { get; set; }

        [Setting, DefaultValue(0)]
        public int ProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int ProfBuffHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool PurifyingBrew { get; set; }

        [Setting, DefaultValue(2)]
        public int PurifyingBrewLevel { get; set; }

        [Setting, DefaultValue(true)]
        public bool RenewingMist { get; set; }

        [Setting, DefaultValue(95)]
        public int RenewingMistHP { get; set; }

        [Setting, DefaultValue(90)]
        public int RenewingMistMana { get; set; }

        [Setting, DefaultValue(true)]
        public bool Revival { get; set; }

        [Setting, DefaultValue(10)]
        public int RevivalUnits { get; set; }

        [Setting, DefaultValue(50)]
        public int RevivalHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool RisingSunKick { get; set; }

        [Setting, DefaultValue(true)]
        public bool Roll { get; set; }

        [Setting, DefaultValue(10)]
        public int RollMinDistance { get; set; }

        [Setting, DefaultValue(20)]
        public int RollMaxDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool RollBrew { get; set; }

        [Setting, DefaultValue(10)]
        public int RollBrewMinDistance { get; set; }

        [Setting, DefaultValue(20)]
        public int RollBrewMaxDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool RushingJadeWind { get; set; }

        [Setting, DefaultValue(3)]
        public int RushingJadeWindNumberUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool RushingJadeWindMist { get; set; }

        [Setting, DefaultValue(3)]
        public int RushingJadeWindMistNumberUnit { get; set; }

        [Setting, DefaultValue(85)]
        public int RushingJadeWindMistHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool SoothingMist { get; set; }

        [Setting, DefaultValue(75)]
        public int SoothingMistHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpearHandStrike { get; set; }

        [Setting, DefaultValue(2000)]
        public int SpearHandStrikeMs { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpearHandStrikeSilence { get; set; }

        [Setting, DefaultValue(30)]
        public int SpearHandStrikeSilenceHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpinningCraneKick { get; set; }

        [Setting, DefaultValue(3)]
        public int SpinningCraneKickNumberUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpinningCraneKickBrew { get; set; }

        [Setting, DefaultValue(3)]
        public int SpinningCraneKickBrewNumberUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpinningCraneKickMist { get; set; }

        [Setting, DefaultValue(3)]
        public int SpinningCraneKickMistUnits { get; set; }

        [Setting, DefaultValue(85)]
        public int SpinningCraneKickMistHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool SpinningFireBlossom { get; set; }

        [Setting, DefaultValue(10)]
        public int SpinningFireBlossomMinDistance { get; set; }

        [Setting, DefaultValue(60)]
        public int StartEating { get; set; }

        [Setting, DefaultValue(17)] //Q
        public int StrafleLeft { get; set; }

        [Setting, DefaultValue(5)] //E
        public int StrafleRight { get; set; }

        [Setting, DefaultValue(true)]
        public bool SummonBlackOxStatue { get; set; }

        [Setting, DefaultValue(30)]
        public int SummonBlackOxStatueDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool SummonJadeSerpentStatue { get; set; }

        [Setting, DefaultValue(50)]
        public int SummonJadeSerpentStatueDistance { get; set; }

        [Setting, DefaultValue(true)]
        public bool SurgingMist { get; set; }

        [Setting, DefaultValue(20)]
        public int SurgingMistHP { get; set; }

        [Setting, DefaultValue(5)]
        public int SurgingMistVistaMistStack { get; set; }

        [Setting, DefaultValue(true)]
        public bool ThunderFocusTeaUplift { get; set; }

        [Setting, DefaultValue(3)]
        public int ThunderFocusTeaUpliftUnits { get; set; }

        [Setting, DefaultValue(60)]
        public int ThunderFocusTeaUpliftHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ThunderFocusTeaSurgingMist { get; set; }

        [Setting, DefaultValue(30)]
        public int ThunderFocusTeaSurgingMistHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool TigereyeBrew { get; set; }

        [Setting, DefaultValue(10)]
        public int TigereyeBrewStack { get; set; }

        [Setting, DefaultValue(true)]
        public bool TigerPalm { get; set; }

        [Setting, DefaultValue(true)]
        public bool TigerPalmMist { get; set; }

        [Setting, DefaultValue(60)]
        public int TigerPalmMistMana { get; set; }

        [Setting, DefaultValue(true)]
        public bool TigerPalmMistTigerPower { get; set; }

        [Setting, DefaultValue(false)]
        public bool TigerPalmMistVitalMists { get; set; }

        [Setting, DefaultValue(true)]
        public bool TigersLust { get; set; }

        [Setting, DefaultValue(true)]
        public bool TigersLustMe { get; set; }

        [Setting, DefaultValue(false)]
        public bool TigersLustMelee { get; set; }

        [Setting, DefaultValue(false)]
        public bool TigersLustCaster { get; set; }

        [Setting, DefaultValue(false)]
        public bool TigersLustHealer { get; set; }

        [Setting, DefaultValue(true)]
        public bool TouchofDeath { get; set; }

        [Setting, DefaultValue(true)]
        public bool TouchofKarma { get; set; }

        [Setting, DefaultValue(50)]
        public int TouchofKarmaHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Transcendence { get; set; }

        [Setting, DefaultValue(30)]
        public int TranscendenceHP { get; set; }

        [Setting, DefaultValue(30)]
        public int TranscendenceDistance { get; set; }

        [Setting, DefaultValue(0)]
        public int Trinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int Trinket1HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int Trinket2HP { get; set; }

        [Setting, DefaultValue(300)]
        public int TrueFacingTimeOut { get; set; }

        [Setting, DefaultValue(4)] //D
        public int TurnLeft { get; set; }

        [Setting, DefaultValue(1)] //A
        public int TurnRight { get; set; }

        [Setting, DefaultValue(true)]
        public bool Uplift { get; set; }

        [Setting, DefaultValue(5)]
        public int UpliftUnits { get; set; }

        [Setting, DefaultValue(80)]
        public int UpliftHP { get; set; }

        [Setting, DefaultValue(70)]
        public int UrgentHeal { get; set; }

        [Setting, DefaultValue(true)]
        public bool UseFoodDrink { get; set; }

        [Setting, DefaultValue(true)]
        public bool ZenSphere { get; set; }

        [Setting, DefaultValue(85)]
        public int ZenSphereHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ZenSphereDetonate { get; set; }

        [Setting, DefaultValue(5)]
        public int ZenSphereDetonateUnit { get; set; }

        [Setting, DefaultValue(80)]
        public int ZenSphereDetonateHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ZenSphereMe { get; set; }

        [Setting, DefaultValue(70)]
        public int ZenSphereMeHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool ZenMed { get; set; }

        [Setting, DefaultValue(5)]
        public int ZenMedUnit { get; set; }

        [Setting, DefaultValue(50)]
        public int ZenMedHP { get; set; }

        #endregion

        #region Group Healing

        [Setting, DefaultValue(true)]
        public bool Group1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group8 { get; set; }

        #endregion
    }
}